home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 11 / CU Amiga Magazine's Super CD-ROM 11 (1997)(EMAP Images)(GB)(Track 1 of 3)[!][issue 1997-06].iso / cucd / programming / oberonv4 / source / system / amigaintuition.mod (.txt) < prev    next >
Oberon Text  |  1996-07-28  |  13KB  |  374 lines

  1. Syntax10.Scn.Fnt
  2. Syntax10i.Scn.Fnt
  3. Syntax10b.Scn.Fnt
  4. MODULE AmigaIntuition;    (* OJ 9-Jun-96 *)
  5. IMPORT
  6.  SYSTEM, E:=AmigaExec, G:=AmigaGraphics, T:=AmigaTimer, IE:=AmigaInputEvent, U:=AmigaUtility;
  7.  intuiBase- : E.LibraryPtr;
  8.  intuiVersion- : INTEGER;
  9.  termEntry : E.TermEntry;
  10.  dummy : LONGINT;
  11. CONST
  12.  intuitionName*="intuition.library";
  13.  autoScroll*=14;
  14.  windowSizing*=0;
  15.  windowDrag*=1;
  16.  windowDepth*=2;
  17.  windowClose*=3;
  18.  sizeBRight*=4;
  19.  sizeBBottom*=5;
  20.  refreshBits*={6,7};
  21.  smartRefresh*={};
  22.  simpleRefresh*=6;
  23.  superBitMap*=7;
  24.  otherRefresh*={6,7};
  25.  backDrop*=8;
  26.  reportMouse*=9;
  27.  gimmeZeroZero*=10;
  28.  borderless*=11;
  29.  activate*=12;
  30.  windowActive*=13;
  31.  inRequest*=14;
  32.  menuState*=15;
  33.  rmbTrap*=16;
  34.  noCareRefresh*=17;
  35.  windowRefresh*=24;
  36.  wbenchWindow*=25;
  37.  windowTicked*=26;
  38.  nwExtended*=18;
  39.  visitor*=27;
  40.  zoomed*=28;
  41.  hasZoom*=29;
  42.  oScanText*=1;
  43.  waDummy*=U.user+99;
  44.  waLeft*=waDummy+001H;
  45.  waTop*=waDummy+002H;
  46.  waWidth*=waDummy+003H;
  47.  waHeight*=waDummy+004H;
  48.  waDetailPen*=waDummy+005H;
  49.  waBlockPen*=waDummy+006H;
  50.  waIDCMP*=waDummy+007H;
  51.  waFlags*=waDummy+008H;
  52.  waGadgets*=waDummy+009H;
  53.  waCheckmark*=waDummy+00AH;
  54.  waTitle*=waDummy+00BH;
  55.  waScreenTitle*=waDummy+00CH;
  56.  waCustomScreen*=waDummy+00DH;
  57.  waSuperBitMap*=waDummy+00EH;
  58.  waMinWidth*=waDummy+00FH;
  59.  waMinHeight*=waDummy+010H;
  60.  waMaxWidth*=waDummy+011H;
  61.  waMaxHeight*=waDummy+012H;
  62.  waInnerWidth*=waDummy+013H;
  63.  waInnerHeight*=waDummy+014H;
  64.  waPubScreenName*=waDummy+015H;
  65.  waPubScreen*=waDummy+016H;
  66.  waPubScreenFallBack*=waDummy+017H;
  67.  waWindowName*=waDummy+018H;
  68.  waColors*=waDummy+019H;
  69.  waZoom*=waDummy+01AH;
  70.  waMouseQueue*=waDummy+01BH;
  71.  waBackFill*=waDummy+01CH;
  72.  waRptQueue*=waDummy+01DH;
  73.  waSizeGadget*=waDummy+01EH;
  74.  waDragBar*=waDummy+01FH;
  75.  waDepthGadget*=waDummy+020H;
  76.  waCloseGadget*=waDummy+021H;
  77.  waBackdrop*=waDummy+022H;
  78.  waReportMouse*=waDummy+023H;
  79.  waNoCareRefresh*=waDummy+024H;
  80.  waBorderless*=waDummy+025H;
  81.  waActivate*=waDummy+026H;
  82.  waRMBTrap*=waDummy+027H;
  83.  waWBenchWindow*=waDummy+028H;
  84.  waSimpleRefresh*=waDummy+029H;
  85.  waSmartRefresh*=waDummy+02AH;
  86.  waSizeBRight*=waDummy+02BH;
  87.  waSizeBBottom*=waDummy+02CH;
  88.  waAutoAdjust*=waDummy+02DH;
  89.  waGimmeZeroZero*=waDummy+02EH;
  90.  waMenuHelp*=waDummy+02FH;
  91.  sizeVerify*=0;
  92.  newSize*=1;
  93.  refreshWindow*=2;
  94.  mouseButtons*=3;
  95.  mouseMove*=4;
  96.  gadgetDown*=5;
  97.  gadgetUp*=6;
  98.  reqSet*=7;
  99.  menuPick*=8;
  100.  closeWindow*=9;
  101.  rawKey*=10;
  102.  reqVerify*=11;
  103.  reqClear*=12;
  104.  menuVerify*=13;
  105.  newPrefs*=14;
  106.  diskInserted*=15;
  107.  diskRemoved*=16;
  108.  wbenchMessage*=17;
  109.  activeWindow*=18;
  110.  inactiveWindow*=19;
  111.  deltaMove*=20;
  112.  vanillaKey*=21;
  113.  intuiTicks*=22;
  114.  idcmpUpdate*=23;
  115.  menuHelp*=24;
  116.  changeWindow*=25;
  117.  lonelyMessage*=31;
  118.  selectUp       *= IE.lButton + IE.upPrefix;
  119.  selectDown     *= IE.lButton;
  120.  menuUp         *= IE.rButton + IE.upPrefix;
  121.  menuDown       *= IE.rButton;
  122.  middleDown     *= IE.mButton;
  123.  middleUp       *= IE.mButton + IE.upPrefix;
  124.  cursorUp       *= 04CH;
  125.  cursorLeft     *= 04FH;
  126.  cursorRight    *= 04EH;
  127.  cursorDown     *= 04DH;
  128.  keyCodeQ       *= 010H;
  129.  keyCodeZ       *= 031H;
  130.  keyCodeX       *= 032H;
  131.  keyCodeV       *= 034H;
  132.  keyCodeB       *= 035H;
  133.  keyCodeN       *= 036H;
  134.  keyCodeM       *= 037H;
  135.  keyCodeLess    *= 038H;
  136.  keyCodeGreater *= 039H;
  137.  saDummy*=U.user+32;
  138.  saLeft*=saDummy+00001H;
  139.  saTop*=saDummy+00002H;
  140.  saWidth*=saDummy+00003H;
  141.  saHeight*=saDummy+00004H;
  142.  saDepth*=saDummy+00005H;
  143.  saDetailPen*=saDummy+00006H;
  144.  saBlockPen*=saDummy+00007H;
  145.  saTitle*=saDummy+00008H;
  146.  saColors*=saDummy+00009H;
  147.  saErrorCode*=saDummy+0000AH;
  148.  saFont*=saDummy+0000BH;
  149.  saSysFont*=saDummy+0000CH;
  150.  saType*=saDummy+0000DH;
  151.  saBitMap*=saDummy+0000EH;
  152.  saPubName*=saDummy+0000FH;
  153.  saPubSig*=saDummy+00010H;
  154.  saPubTask*=saDummy+00011H;
  155.  saDisplayID*=saDummy+00012H;
  156.  saDClip*=saDummy+00013H;
  157.  saOverscan*=saDummy+00014H;
  158.  saObsolete1*=saDummy+00015H;
  159.  saShowTitle*=saDummy+00016H;
  160.  saBehind*=saDummy+00017H;
  161.  saQuiet*=saDummy+00018H;
  162.  saAutoScroll*=saDummy+00019H;
  163.  saPens*=saDummy+0001AH;
  164.  saFullPalette*=saDummy+0001BH;
  165.  saInterleaved*=saDummy+00022H;
  166.  GadgetPtr*=LONGINT;
  167.  ImagePtr*=LONGINT;
  168.  MenuPtr*=LONGINT;
  169.  NewScreenPtr*=LONGINT;
  170.  NewWindowPtr*=LONGINT;
  171.  RequesterPtr*=LONGINT;
  172.  ScreenPtr*=LONGINT;
  173.  IntuiMessagePtr*=LONGINT;
  174.  WindowPtr*=LONGINT;
  175.  Window*=RECORD
  176.   nextWindow*:WindowPtr;
  177.   leftEdge*,topEdge*:INTEGER;
  178.   width*,height*:INTEGER;
  179.   mouseY*,mouseX*:INTEGER;
  180.   minWidth*,minHeight*:INTEGER;
  181.   maxWidth*,maxHeight*:INTEGER;
  182.   flags*:SET;
  183.   menuStrip*:MenuPtr;
  184.   title*:LONGINT;
  185.   firstRequest*:RequesterPtr;
  186.   dmRequest*:RequesterPtr;
  187.   reqCount*:INTEGER;
  188.   wScreen*:ScreenPtr;
  189.   rPort*:G.RastPortPtr;
  190.   borderLeft*,borderTop*,borderRight*,borderBottom*:SHORTINT;
  191.   borderRPort*:G.RastPortPtr;
  192.   firstGadget*:GadgetPtr;
  193.   parent*,descendant*:WindowPtr;
  194.   pointer*:LONGINT;
  195.   ptrHeight*:SHORTINT;
  196.   ptrWidth*:SHORTINT;
  197.   xOffset*,yOffset*:SHORTINT;
  198.   idcmpFlags*:SET;
  199.   userPort*:E.MsgPortPtr;
  200.   windowPort*:E.MsgPortPtr;
  201.   messageKey*:IntuiMessagePtr;
  202.   detailPen*,blockPen*:SHORTINT;
  203.   checkMark*:ImagePtr;
  204.   screenTitle*:LONGINT;
  205.   gzzMouseX*:INTEGER;
  206.   gzzMouseY*:INTEGER;
  207.   gzzWidth*:INTEGER;
  208.   gzzHeight*:INTEGER;
  209.   extData*:LONGINT;
  210.   userData*:LONGINT;
  211.   wLayer*:G.LayerPtr;
  212.   iFont*:G.TextFontPtr;
  213.   moreFlags*:INTEGER;
  214.  END;
  215.  Screen*=RECORD
  216.   nextScreen*:ScreenPtr;
  217.   firstWindow*:WindowPtr;
  218.   leftEdge*,topEdge*:INTEGER;
  219.   width*,height*:INTEGER;
  220.   mouseY*,mouseX*:INTEGER;
  221.   flags*:INTEGER;
  222.   title*:LONGINT;
  223.   defaultTitle*:LONGINT;
  224.   barHeight*,barVBorder*,barHBorder*,menuVBorder*,menuHBorder*:SHORTINT;
  225.   wBorTop*,wBorLeft*,wBorRight*,wBorBottom*:SHORTINT;
  226.   font*:G.TextAttrPtr;
  227.   viewPort*:G.ViewPort;
  228.   rastPort*:G.RastPort;
  229.   bitMap*:G.BitMap;
  230.   layerInfo*:G.LayerInfo;
  231.   firstGadget*:GadgetPtr;
  232.   detailPen*,blockPen*:SHORTINT;
  233.   saveColor0*:INTEGER;
  234.   barLayer*:G.LayerPtr;
  235.   extData*:LONGINT;
  236.   userData*:LONGINT;
  237.  END;
  238.  IntuiMessage*=RECORD
  239.   execMessage*:E.Message;
  240.   class*:SET;
  241.   code*:INTEGER;
  242.   qualifier*:INTEGER;
  243.   iAddress*:LONGINT;
  244.   mouseX*,mouseY*:INTEGER;
  245.   time*:T.TimeVal;
  246.   idcmpWindow*:WindowPtr;
  247.   specialLink*:IntuiMessagePtr;
  248.  END;
  249.  EasyStruct*=RECORD
  250.   size*: LONGINT;
  251.   flags*: SET;
  252.   title*: LONGINT;
  253.   textFormat*: LONGINT;
  254.   gadgetFormat*: LONGINT;
  255.  END;
  256. PROCEDURE -ReturnD0    04EH,05EH,  04EH,075H;
  257. PROCEDURE ActivateWindow*(window:WindowPtr);
  258. BEGIN
  259.     SYSTEM.PUTREG( 0, window );
  260.     SYSTEM.CALL( -450, intuiBase )
  261. END ActivateWindow;
  262. PROCEDURE CloseScreen*(screen:ScreenPtr);
  263. BEGIN
  264.     SYSTEM.PUTREG( 8, screen );
  265.     SYSTEM.CALL( -66, intuiBase )
  266. END CloseScreen;
  267. PROCEDURE CloseWindow*(window:WindowPtr);
  268. BEGIN
  269.     SYSTEM.PUTREG( 8, window );
  270.     SYSTEM.CALL( -72, intuiBase )
  271. END CloseWindow;
  272. PROCEDURE CurrentTime*(VAR seconds,micros:LONGINT);
  273. BEGIN
  274.     dummy := SYSTEM.ADR(micros);
  275.     SYSTEM.PUTREG( 8, SYSTEM.ADR(seconds) );
  276.     SYSTEM.PUTREG( 9, dummy );
  277.     SYSTEM.CALL( -84, intuiBase )
  278. END CurrentTime;
  279. PROCEDURE OpenScreenTags*(newScreen:NewScreenPtr; VAR tagList:ARRAY OF U.TagItem):ScreenPtr;
  280. BEGIN
  281.     SYSTEM.PUTREG( 9, SYSTEM.ADR(tagList) );
  282.     SYSTEM.PUTREG( 8, newScreen );
  283.     SYSTEM.CALL( -612, intuiBase );
  284.     ReturnD0
  285. END OpenScreenTags;
  286. PROCEDURE OpenWindowTags*(newWindow:NewWindowPtr; VAR tagList:ARRAY OF U.TagItem):WindowPtr;
  287. BEGIN
  288.     SYSTEM.PUTREG( 9, SYSTEM.ADR(tagList) );
  289.     SYSTEM.PUTREG( 8, newWindow );
  290.     SYSTEM.CALL( -606, intuiBase );
  291.     ReturnD0
  292. END OpenWindowTags;
  293. PROCEDURE ModifyIDCMP*(window:WindowPtr; flags:SET);
  294. BEGIN
  295.     SYSTEM.PUTREG( 8, window );
  296.     SYSTEM.PUTREG( 0, flags );
  297.     SYSTEM.CALL( -150, intuiBase );
  298. END ModifyIDCMP;
  299. PROCEDURE ScreenToBack*(screen:ScreenPtr);
  300. BEGIN
  301.     SYSTEM.PUTREG( 8, screen );
  302.     SYSTEM.CALL( -246, intuiBase )
  303. END ScreenToBack;
  304. PROCEDURE ScreenToFront*(screen:ScreenPtr);
  305. BEGIN
  306.     SYSTEM.PUTREG( 8, screen );
  307.     SYSTEM.CALL( -252, intuiBase )
  308. END ScreenToFront;
  309. PROCEDURE ClearPointer*(win:WindowPtr);
  310. BEGIN
  311.     SYSTEM.PUTREG( 8, win );
  312.     SYSTEM.CALL( -60, intuiBase )
  313. END ClearPointer;
  314. PROCEDURE LockPubScreen*(name:LONGINT):ScreenPtr;
  315. BEGIN
  316.     SYSTEM.PUTREG( 8, name );
  317.     SYSTEM.CALL( -510, intuiBase );
  318.     ReturnD0
  319. END LockPubScreen;
  320. PROCEDURE SetPointer*(win:WindowPtr; ptr:LONGINT; h,w,dx,dy:INTEGER);
  321. BEGIN
  322.     SYSTEM.PUTREG( 8, win );
  323.     SYSTEM.PUTREG( 9, ptr );
  324.     SYSTEM.PUTREG( 0, h );
  325.     SYSTEM.PUTREG( 1, w );
  326.     SYSTEM.PUTREG( 2, dx );
  327.     SYSTEM.PUTREG( 3, dy );
  328.     SYSTEM.CALL( -270, intuiBase )
  329. END SetPointer;
  330. PROCEDURE ShowTitle*(screen:ScreenPtr; showIt:BOOLEAN);
  331. BEGIN
  332.     IF showIt THEN  SYSTEM.PUTREG( 0, -1 )  ELSE  SYSTEM.PUTREG( 0, 0 )  END;    (* OS-Bug? *)
  333.     SYSTEM.PUTREG( 8, screen );
  334.     SYSTEM.CALL( -282, intuiBase )
  335. END ShowTitle;
  336. PROCEDURE UnlockPubScreen*(name:LONGINT; screen:ScreenPtr);
  337. BEGIN
  338.     SYSTEM.PUTREG( 8, name );
  339.     SYSTEM.PUTREG( 9, screen );
  340.     SYSTEM.CALL( -516, intuiBase )
  341. END UnlockPubScreen;
  342. PROCEDURE CallEasyRequest*(win: WindowPtr; Flags: SET; title, text, gadget: ARRAY OF CHAR): LONGINT;
  343. VAR s: EasyStruct;
  344. BEGIN
  345.     s.size:=SIZE(EasyStruct);
  346.     s.flags:=Flags;
  347.     s.title:=SYSTEM.ADR(title);
  348.     s.textFormat:=SYSTEM.ADR(text);
  349.     s.gadgetFormat:=SYSTEM.ADR(gadget);
  350.     SYSTEM.PUTREG( 9, SYSTEM.ADR(s) );
  351.     SYSTEM.PUTREG( 8, win );
  352.     SYSTEM.PUTREG( 10, E.null );
  353.     SYSTEM.PUTREG( 11, E.null );
  354.     SYSTEM.CALL( -588, intuiBase );
  355.     ReturnD0
  356. END CallEasyRequest;
  357. PROCEDURE Init;
  358. TYPE LibraryPtr=POINTER TO E.Library;
  359. VAR lib:LibraryPtr;
  360. BEGIN
  361.     intuiBase:=E.OpenLibrary(intuitionName,37);
  362.     IF intuiBase=0 THEN HALT(99) END;
  363.     lib:=SYSTEM.VAL(LibraryPtr,intuiBase);
  364.     intuiVersion:=lib.version;
  365. END Init;
  366. PROCEDURE Term;
  367. BEGIN
  368.     E.CloseLibrary( intuiBase )
  369. END Term;
  370. BEGIN
  371.     Init;
  372.     E.Register(termEntry, Term);
  373. END AmigaIntuition.
  374.